﻿/*
 * SharpDevelop으로 작성되었습니다.
 * 사용자: 2120
 * 날짜: 2012-10-02
 * 시간: 오후 1:54
 * 
 * 이 템플리트를 변경하려면 [도구->옵션->코드 작성->표준 헤더 편집]을 이용하십시오.
 */
using System;
using System.Windows.Forms;
using System.Drawing;



namespace NtLibrary.Pick
{
	/// <summary>
	/// 자신만의 비트맵을 그릴수있는 클래스입니다.
	/// </summary>
	public class PictureNode : GameNodeobject
	{
		/// <summary>
		/// 그려질 비트맵
		/// </summary>
		private System.Drawing.Bitmap canvas = null;
		/// <summary>
		/// 목적 비트맵에 그릴 비트맵인자.
		/// </summary>
		private System.Drawing.Bitmap picture = null;
		
		public PictureNode(System.Drawing.Bitmap c)
		{
			canvas = c;
		}
		
		public PictureNode(System.Drawing.Bitmap c,System.Drawing.Bitmap p)
		{
			canvas = c;
			picture = p;
		}
		
		/// <summary>
		/// 현재 정해진 비트맵을 그립니다.
		/// </summary>
		/// <param name="o">그려지는 영역 Rectangle</param>
		public override void Draw(object o)
		{
			if(canvas == null){
				throw new Exception();
			}
			
			NtLibrary.Bitmap.BitmapManager manager = NtLibrary.Bitmap.BitmapManager.GetInstance();
			Graphics g = manager.GetDC(canvas);
			Rectangle rect = ((Rectangle)o);
			
			if(picture == null){
				g.DrawRectangle(manager.CreatePen(Color.Black),new Rectangle(rect.X,rect.Y,rect.Width,rect.Height));
				//g.DrawString("Not Bitmap",new Font(Form.ActiveForm.Font,10),null,rect.X,rect.Y);
			}else{
				//비트맵의 크기가아닌 현재 노드의 크기에 맞춰서 그림이 출력된다.
				g.DrawImage(picture,rect.X,rect.Y,rect.Width,rect.Height);
			}
			
			g.Dispose();
		}
		
	}
}
